﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Permissions;
using System.Collections;
using System.Linq;

using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using uacars;

namespace CADLibraryClass
{
    public class OfertasCAD
    {
        private string cadenaConexion;

        public OfertasCAD()
        {
            cadenaConexion = Singleton.Instancia.Cadena;
        }


        //IMPLEMENTACION DE LAS FUNCIONES DE ACCESO A DATOS
        public bool AltaOferta(int id, int vehiculo, int cliente, string chofer, string descripcion, DateTime fechainicio, DateTime fechafin, int descuento, int dias)
        {
            bool estadoOperacion = false;

            try
            {
                DataSet bdvirtual = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter("select * from ofertas", cadenaConexion);
                da.Fill(bdvirtual, "ofertas");

                DataTable dt = new DataTable();
                dt = bdvirtual.Tables["ofertas"];

                DataRow nuevaFila = dt.NewRow();
                nuevaFila[0] = id;
                nuevaFila[1] = cliente;
                nuevaFila[2] = vehiculo;
                nuevaFila[3] = chofer;
                nuevaFila[4] = fechainicio;
                nuevaFila[5] = fechafin;
                nuevaFila[6] = descuento;
                nuevaFila[7] = dias;
                nuevaFila[8] = descripcion;

                dt.Rows.Add(nuevaFila);

                SqlCommandBuilder cBuilder = new SqlCommandBuilder(da);

                da.Update(bdvirtual, "ofertas");

                dt.AcceptChanges();
                
                
               
            }


            catch (SqlException sqlex)
            {
                throw new Exception("Error insertando ofertas en uacarsBD: " + id, sqlex);
            }

            catch (Exception ex)
            {
                throw ex;
            }
            estadoOperacion = true;

            return (estadoOperacion);
        }

        public bool ModificarOferta(int id, int vehiculo, int cliente, string chofer, string descripcion, DateTime fechainicio, DateTime fechafin, int descuento, int dias)
        {
            bool estadoOperacion;
            try
            {
                DataSet bdvirtual = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter("select * from ofertas", cadenaConexion);
                da.Fill(bdvirtual, "ofertas");

                DataTable dt = new DataTable();
                dt = bdvirtual.Tables["ofertas"];


                DataRow fila = dt.Select("id='" + id + "'")[0];
                fila["id"] = id;
                fila["cliente"] = cliente;
                fila["vehiculo"] = vehiculo;
                fila["chofer"] = chofer;
                fila["fechainicio"] = fechainicio;
                fila["fechafin"] = fechafin;
                fila["porcentaje"] = descuento;
                fila["diasgratis"] = dias;
                fila["descripcion"] = descripcion;


                bdvirtual.Tables["ofertas"].LoadDataRow(fila.ItemArray, true);
                SqlCommandBuilder cBuilder = new SqlCommandBuilder(da);

                da.Update(bdvirtual, "ofertas");

                dt.AcceptChanges();
            }


            catch (SqlException sqlex)
            {
                throw new Exception("Error modificando oferta en uacarsBD: " + id, sqlex);
            }

            catch (Exception ex)
            {
                throw ex;
            }
            estadoOperacion = true;

            return (estadoOperacion);
        }


        public bool BorrarOferta(int id)
        {
            try
            {
                DataSet bdvirtual = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter("select * from ofertas", cadenaConexion);
                da.Fill(bdvirtual, "ofertas");

                DataTable dt = new DataTable();
                dt = bdvirtual.Tables["ofertas"];

                DataRow[] filaBorrar;
                filaBorrar = dt.Select("id = '" + id + "'");
                filaBorrar[0].Delete();

                SqlCommandBuilder cBuilder = new SqlCommandBuilder(da);

                da.Update(bdvirtual, "ofertas");

                dt.AcceptChanges();

            }

            catch (SqlException sqlex)
            {
                throw new Exception("Error borrando pedido en uacarsBD: " + id, sqlex);
            }

            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }




        public DataTable BuscarOfertas()
        {
            DataSet bdvirtual = new DataSet();

            SqlDataAdapter da = new SqlDataAdapter("select * from ofertas", cadenaConexion);

            da.Fill(bdvirtual, "ofertas");

            DataTable dt = new DataTable();
            
            dt = bdvirtual.Tables["ofertas"];
        
            return (dt);

        }

        public DataTable BuscarOfertas(int id, int vehiculo, int cliente, string chofer, string descripcion, DateTime fechainicio, DateTime fechafin, int descuento, int dias)
        {
            string filtro = "";

            if (id != 0) filtro += "id = " + id;
            if (vehiculo != 0) { if (filtro != "") filtro += " AND "; filtro += "vehiculo = " + vehiculo; }
            if (cliente != 0) { if (filtro != "") filtro += " AND "; filtro += "cliente = " + cliente; }
            if (chofer != "SI") { if (filtro != "") filtro += " AND "; filtro += "chofer LIKE 'NO'"; }
            else
            {
                if (filtro != "") filtro += " AND chofer LIKE 'SI'";
                else filtro += "chofer LIKE 'SI'";
            }
            if (descripcion != "") { if (filtro != "") filtro += " AND "; filtro += "descripcion LIKE '" + descripcion + "'"; }
            if (fechainicio != DateTime.Parse("01/01/1900")) { if (filtro != "") filtro += " AND "; filtro += "fechainicio = '" + fechainicio.Date + "'"; }
            if (fechafin != DateTime.Parse("01/01/1900")) { if (filtro != "") filtro += " AND "; filtro += "fechafin = '" + fechafin.Date + "'"; }
            if (descuento != 0) { if (filtro != "") filtro += " AND "; filtro += "porcentaje = " + descuento; }
            if (dias != 0) { if (filtro != "") filtro += " AND "; filtro += "diasgratis = " + dias; }


            string nombreTabla = "ofertas";
            DataSet ds = new DataSet();
            ds.Tables.Add(nombreTabla);
            SqlConnection conn = new SqlConnection(cadenaConexion);
            SqlDataAdapter da = new SqlDataAdapter();
            SqlCommand co = new SqlCommand("", conn);
            SqlCommand co2 = new SqlCommand("", conn);
            SqlCommand co3 = new SqlCommand("", conn);

            if (filtro == "")
            {
                co.CommandText = "select * from " + nombreTabla;
            }
            else
                co.CommandText = "select * from " + nombreTabla + " WHERE " + filtro;


            
            da.SelectCommand = co;
            da.Fill(ds, nombreTabla);

            return ds.Tables[nombreTabla];
        }
    }
}